/*
 *  Created at 2012-04-04 03:44 GMT-03:00
 *  Author: Victor Williams Stafusa da Silva
 *  JSmartUnit
 */
package org.jsmartunit.model;

import java.lang.annotation.Annotation;
import java.util.List;

import org.jsmartunit.util.Stringfier;

import org.junit.runners.model.InitializationError;

/**
 * @author Victor Williams Stafusa da Silva
 */
public interface TestRunnerFactory {

    public <E extends Annotation> E getAnnotation(Class<E> annotationClass);

    public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);

    public TestRunner createNoArgRunner() throws InitializationError;

    public <T> List<TestRunner> createSingleArgRunners(List<T> params, Stringfier<T> s) throws InitializationError;

    public List<TestRunner> createMultiArgRunners(List<Object[]> params, Stringfier<Object[]> s) throws InitializationError;
}
